cleanup.
#if 1
#define Dprintk(args...)
-#define xxprint(msg) HYPERVISOR_console_io(CONSOLEIO_write, strlen(msg), msg)
#else
#include <mach_apic.h>
#endif
#if 1
int cpu;
- xxprint("smp_alloc_memory\n");
for (cpu = 1; cpu < NR_CPUS; cpu++) {
cpu_gdt_descr[cpu].address = (unsigned long)
alloc_bootmem_low_pages(PAGE_SIZE);
static irqreturn_t local_debug_interrupt(int irq, void *dev_id,
struct pt_regs *regs)
{
- xxprint("local_debug_interrupt\n");
return IRQ_HANDLED;
}
static int __init
wakeup_secondary_cpu(int phys_apicid, unsigned long start_eip)
{
-#if 1
- xxprint("wakeup_secondary_cpu\n");
- return 0;
-#else
unsigned long send_status = 0, accept_status = 0;
int maxlvt, timeout, num_starts, j;
printk("APIC delivery error (%lx).\n", accept_status);
return (send_status | accept_status);
-#endif
}
#endif /* WAKE_SECONDARY_VIA_INIT */
#endif
if (cpu_has_tsc && cpucount && cpu_khz)
synchronize_tsc_bp();
#endif
- xxprint("smp_boot_cpus done\n");
}
/* These are wrappers to interface to the new boot process. Someone
int __devinit __cpu_up(unsigned int cpu)
{
- xxprint("__cpu_up\n");
/* This only works at boot for x86. See "rewrite" above. */
if (cpu_isset(cpu, smp_commenced_mask)) {
local_irq_enable();
cpu_set(cpu, smp_commenced_mask);
while (!cpu_isset(cpu, cpu_online_map))
mb();
- xxprint("__cpu_up ok\n");
return 0;
}
(void)setup_irq(bind_virq_to_irq(VIRQ_MISDIRECT), &misdirect_action);
}
-static irqreturn_t xen_dbg(int irq, void *dev_id, struct pt_regs *regs)
-{
- char *msg = "debug\n";
- (void)HYPERVISOR_console_io(CONSOLEIO_write, strlen(msg), msg);
- return IRQ_HANDLED;
-}
-
-static struct irqaction xen_action = {
- xen_dbg,
- SA_INTERRUPT,
- CPU_MASK_CPU0,
- "xen-dbg",
- NULL,
- NULL
-};
-
void irq_suspend(void)
{
int pirq, virq, irq, evtchn;
(void)setup_misdirect_virq();
- printk("debug_int\n");
- (void)setup_irq(bind_virq_to_irq(VIRQ_DEBUG), &xen_action);
-
/* This needs to be done early, but after the IRQ subsystem is alive. */
ctrl_if_init();
}
/* Ensure that there are no stale writable mappings in any TLB. */
/* NB. INVLPG is a serialising instruction: flushes pending updates. */
-#if 0
+#if 1
__flush_tlb_one(l1va); /* XXX Multi-CPU guests? */
#else
flush_tlb_all();
if ( (which == PTWR_PT_ACTIVE) && likely(!current->mm.shadow_mode) )
{
*pl2e = mk_l2_pgentry(l2e & ~_PAGE_PRESENT);
-#if 0
+#if 1
flush_tlb(); /* XXX Multi-CPU guests? */
#else
flush_tlb_all();
goto out;
}
- printk("do_boot_vcpu for dom %d vcpu %ld\n", d->id, vcpu);
-
ed = d->exec_domain[vcpu];
atomic_set(&ed->pausecnt, 0);
return port;
bind->port = port;
- printk("evtchn_bind_virq %d/%d virq %d -> %d\n",
- d->id, ed->eid, virq, port);
return 0;
}
return port;
bind->port = port;
- printk("evtchn_bind_ipi %d/%d ipi_edom %d -> %d\n",
- d->id, current->eid, ipi_edom, port);
return 0;
}
return rc;
bind->port = port;
- printk("evtchn_bind_pirq %d/%d pirq %d -> port %d\n",
- d->id, current->eid, pirq, port);
return 0;
}